// function validateIdCard10(idNmuber) { 
//     var str = idNmuber.replace(/,/g,'')
//     var _length = str.length
//     if(_length != 8 && _length != 9 && _length != 10){
//         return false
//     }
//     if(Reg("/^[a-zA-Z][0-9]{9}$/",idNmuber)){

//     }else if(Reg("/^[1|5|7][0-9]{6}\\(?[0-9A-Z]\\)?$/",idNmuber)){  //澳门
//         return true
//     }else if(Reg("/^[A-Z]{1,2}[0-9]{6}\\(?[0-9A-Z]\\)?$/",idNmuber)){  //香港
//         return true
//     }else{
//         return false
//     }
// }

// //验证台湾身份证号10位
// function idcare_tw(idNmuber){ 
//     if(idNmuber.length !=10){
//         return false
//     }
//     var firstNumber = idNmuber.toUpperCase().substr(0,1)
//     if(idNmuber.indexOf(firstNumber) == -1){return false}
//     if(idNmuber.substr(1,1) != '1'&& idNmuber.substr(1,1) != '2'){ return false}
//     if(!Reg("/^[0-9]+.?[0-9]*$/",idNmuber.substr(1,9))){ return false}
//     //未完
// }


//检查号码是否符合规范，包括长度，类型  
function isCardNo(card){  
    //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X  
    var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;  
    if(reg.test(card) === false)  
    {  
        return false;  
    }   
    return true;  
}; 


//校验位的检测  
function checkParity(card){  
    //15位转18位  
    card = changeFivteenToEighteen(card);  
    var len = card.length;  
    if(len == '18')  
    {  
        var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
        var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  
        var cardTemp = 0, i, valnum;  
        for(i = 0; i < 17; i ++)  
        {  
            cardTemp += card.substr(i, 1) * arrInt[i];  
        }  
        valnum = arrCh[cardTemp % 11];  
        if (valnum == card.substr(17, 1))  
        {  
            return true;  
        }  
        return false;  
    }  
    return false;  
}


//15位转18位
function changeFivteenToEighteen (card) {
   
        if(card.length == '15'){  
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  
            var cardTemp = 0, i;    
            card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);  
            for(i = 0; i < 17; i ++)  
            {  
                cardTemp += card.substr(i, 1) * arrInt[i];  
            }  
            card += arrCh[cardTemp % 11];  
            return card;  
        }  
        return card;
}

function checkIdCard(card) { 
    if(isCardNo(card) === false){
        return false
    }
    if(checkParity(card) === false){
        return false
    }
    return true
}


function Reg(_RegExp,idNmuber) { 
    var pat = new RegExp(_RegExp)
    return pat.test(idNmuber)
}

module.exports = {
    checkIdCard:checkIdCard
}